using System;
using System.Collections.Generic;
using Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Servicos.Contratos;
using Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Entidades;

namespace Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Servicos.ServiceImplementation.Translator
{
    /// <summary>
    /// Realiza traducao entre contrato "Artigo" e entidade "Artigo".
    /// </summary>
    public class TradutorArtigo
    {
        /// <summary>
        /// Converte entidade "Artigo" em contrato "Artigo".
        /// </summary>
        public Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Servicos.Contratos.Artigo Traduzir(Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Entidades.Artigo origem)
        {
            Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Servicos.Contratos.Artigo destino = new Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Servicos.Contratos.Artigo();
            destino.Codigo = origem.Codigo;
            destino.Produto.Codigo = origem.Produto.Codigo;
            destino.Produto.Nome = origem.Produto.Nome;
            destino.Versao.Codigo = origem.Versao.Codigo;
            destino.Versao.Nome = origem.Versao.Nome;
            destino.CodigoUsuario = origem.CodigoUsuario;
            destino.NomeTitulo = origem.NomeTitulo;
            destino.Sintoma = origem.Sintoma;
            destino.Solucao = origem.Solucao;
            return destino;
        }

        /// <summary>
        /// Converte entidade "Artigo" em contrato "Artigo".
        /// </summary>
        public List<Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Servicos.Contratos.Artigo> Traduzir(List<Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Entidades.Artigo> origem)
        {
            List<Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Servicos.Contratos.Artigo> destino = new List<Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Servicos.Contratos.Artigo>();
            for (int idx = 0; idx < origem.Count; idx++)
            {
                destino.Add(Traduzir(origem[idx]));
            }

            return destino;
        }

        /// <summary>
        /// Converte contrato "Artigo" em entidade "Artigo".
        /// </summary>
        public Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Entidades.Artigo Traduzir(Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Servicos.Contratos.Artigo origem)
        {
            Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Entidades.Artigo destino = new Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Entidades.Artigo();
            destino.Codigo = origem.Codigo;
            destino.Produto.Codigo = origem.Produto.Codigo;
            destino.Produto.Nome = origem.Produto.Nome;
            destino.Versao.Codigo = origem.Versao.Codigo;
            destino.Versao.Nome = origem.Versao.Nome;
            destino.CodigoUsuario = origem.CodigoUsuario;
            destino.NomeTitulo = origem.NomeTitulo;
            destino.Sintoma = origem.Sintoma;
            destino.Solucao = origem.Solucao;
            return destino;
        }

        /// <summary>
        /// Converte contrato "Artigo" em entidade "Artigo".
        /// </summary>
        public List<Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Entidades.Artigo> Traduzir(List<Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Servicos.Contratos.Artigo> origem)
        {
            List<Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Entidades.Artigo> destino = new List<Bovespa.Sinacor.Servico.BaseConhecimento.Artigo.Entidades.Artigo>();
            for (int idx = 0; idx < origem.Count; idx++)
            {
                destino.Add(Traduzir(origem[idx]));
            }

            return destino;
        }
    }
}

